package com.ly.count.utils;


import com.ly.count.http.CPlusResponse;
import com.ly.count.http.CplusHttpStatus;

/**
 * 响应模型工具类，提供创建成功和失败响应的方法。
 */
public class ResponseModelUtils {

    /**
     * 创建一个成功的响应对象，默认状态码为 APP_SUCCESS。
     *
     * @return 成功的 CPlusResponse 对象
     */
    public static CPlusResponse<Object> success() {
        return new CPlusResponse<>(CplusHttpStatus.APP_SUCCESS);
    }

    /**
     * 创建一个成功的响应对象，并指定自定义的状态码。
     *
     * @param cplusHttpStatus 自定义的状态码
     * @return 成功的 CPlusResponse 对象
     */
    public static CPlusResponse<Object> success(CplusHttpStatus cplusHttpStatus) {
        return new CPlusResponse<>(cplusHttpStatus);
    }

    /**
     * 创建一个失败的响应对象，默认状态码为 APP_ERROR。
     *
     * @return 失败的 CPlusResponse 对象
     */
    public static CPlusResponse<Object> fail() {
        return new CPlusResponse<>(CplusHttpStatus.APP_ERROR);
    }

    /**
     * 创建一个失败的响应对象，并指定自定义的状态码。
     *
     * @param cplusHttpStatus 自定义的状态码
     * @return 失败的 CPlusResponse 对象
     */
    public static CPlusResponse<CplusHttpStatus> fail(CplusHttpStatus cplusHttpStatus) {
        return new CPlusResponse<CplusHttpStatus>(cplusHttpStatus);
    }

    /**
     * 创建一个带有数据体的成功响应对象，默认状态码为 APP_SUCCESS。
     *
     * @param t 数据体
     * @param <T> 数据体的类型
     * @return 成功的 CPlusResponse 对象
     */
    public static <T> CPlusResponse<T> body(T t) {
        return new CPlusResponse<>(t, CplusHttpStatus.APP_SUCCESS);
    }

    /**
     * 创建一个没有数据体的响应对象，并指定自定义的状态码。
     *
     * @param cplusHttpStatus 自定义的状态码
     * @param <T> 数据体的类型
     * @return CPlusResponse 对象
     */
    public static <T> CPlusResponse<T> nobody(CplusHttpStatus cplusHttpStatus) {
        return new CPlusResponse<>(cplusHttpStatus);
    }
    public static <T> CPlusResponse<T> nobody() {
        return new CPlusResponse<>(CplusHttpStatus.APP_SUCCESS);
    }
}

